﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using Telecom.Data;
using Telecom.Service;
using TelecomGis.Helper.Control;

namespace TelecomGis.Controllers
{
    public class ThietbiVTController : ContronllerBase
    {
        private readonly mangVTSer _mangVTSer = new mangVTSer();
        private readonly thietBiSer _thietBiSer = new thietBiSer();
        private readonly donviToSer _donviToSer = new donviToSer();
        private readonly _LapTBService _LapTBService_ = new _LapTBService();
        private readonly cauhinhTBSer _cauhinhTBSer = new cauhinhTBSer();
        private readonly cardSer _cardSer = new cardSer();
        private readonly PortSer _PortSer = new PortSer();
        private readonly loaiPhaSer _loaiPhaSer = new loaiPhaSer();


        //
        // GET: /ThietbiVT/

        public ActionResult ThietbiVT()
        {
            try
            {
                ViewBag.FirstMVT = _mangVTSer._getList().Where(p => p.MA != "PON").First().MA;
            }
            catch (Exception e)
            {
                ViewBag.FirstMVT = "";
            }
            return PartialView();
        }

        public string ListMangVt(string NOTMVT)
        {
            var _listEntity = _mangVTSer._getList().Where(p => p.MA != NOTMVT).ToList();

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public ActionResult _openWinDowLapDatTB_TBVT(string donviqy, string _toql, string siteId, string mangvt)
        {
            LAP_THIETBI model = new LAP_THIETBI();
            if (!string.IsNullOrEmpty(siteId))
            {
                model.SITEID = int.Parse(siteId);
            }

            model.DONVIQL = donviqy;
            model.TOQL = _toql;
            model.DAULUONG = 0;
            model.LOAIPHA = 0;
            model.NGAYLAP = DateTime.Now;
            model.DMTHIETBI = 0;

            ViewBag.DateNow = DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year;
            ViewBag.MangVTADDLTB = mangvt;

            return PartialView(model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult _openWinDowLapDatTB(LAP_THIETBI model)
        {
            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý");
            }

            if (model.DMTHIETBI == 0)
            {
                return JsonError("Vui lòng chọn danh mục thiết bị");
            }


            if (model.SITEID == 0)
            {
                return JsonError("Vui lòng chọn site cho thiết bị ");
            }

            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã lắp đặt");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên lắp đặt");
            }


            if (model.LOAIPHA == 0)
            {
                return JsonError("Vui lòng chọn loại pha cho lắp thiết bị");
            }

            model.MA = model.MA.ToUpper();
            _LapTBService_.addorUpdate(model);

            var _enttiyMa = _LapTBService_.GetByIdMa(model.MA.ToUpper());

            if (model.ID == 0)
            {

                try
                {
                    var _entityCard = _cardSer._getList(model.DMTHIETBI.Value).First();

                    CAUHINH_TBI _cauhinhTb = new CAUHINH_TBI();
                    _cauhinhTb.ID = 0;
                    _cauhinhTb.DAULUONG = 0;
                    _cauhinhTb.SLOT = 1;
                    _cauhinhTb.CARD = _entityCard.ID;
                    _cauhinhTb.TEN = _entityCard.TEN + "/1";
                    _cauhinhTb.THIETBIID = _enttiyMa.ID;
                    _cauhinhTBSer.addorUpdate(_cauhinhTb);
                }
                catch (Exception e)
                {
                    return JsonSuccess("");
                }
            }


            return JsonSuccess("");
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult _openWinDowLapDatTBUpdate(LAP_THIETBI model)
        {
            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý");
            }

            if (model.DMTHIETBI == 0)
            {
                return JsonError("Vui lòng chọn danh mục thiết bị");
            }


            if (model.SITEID == 0)
            {
                return JsonError("Vui lòng chọn site cho thiết bị ");
            }

            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã lắp đặt");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên lắp đặt");
            }


            if (model.LOAIPHA == 0)
            {
                return JsonError("Vui lòng chọn loại pha cho lắp thiết bị");
            }


            model.MA = model.MA.ToUpper();
            _LapTBService_.addorUpdate(model);

            var _enttiyMa = _LapTBService_.GetByIdMa(model.MA.ToUpper());

            if (model.ID == 0)
            {


                var _entityCard = _cardSer._getList(model.DMTHIETBI.Value).First();

                CAUHINH_TBI _cauhinhTb = new CAUHINH_TBI();
                _cauhinhTb.ID = 0;
                _cauhinhTb.DAULUONG = 0;
                _cauhinhTb.SLOT = 1;
                _cauhinhTb.CARD = _entityCard.ID;
                _cauhinhTb.TEN = _entityCard.TEN + "/1";
                _cauhinhTb.THIETBIID = _enttiyMa.ID;
                _cauhinhTBSer.addorUpdate(_cauhinhTb);
            }

            return JsonSuccess("");
        }

        public ActionResult _openWinDowUpdateLapDatTB_TBVT(int Id, string mangvt)
        {
            LAP_THIETBI model = new LAP_THIETBI();
            model = _LapTBService_.GetById(Id);
            model.LOAIPHA = model.LOAIPHA == null ? 0 : model.LOAIPHA;
            model.DAULUONG = model.DAULUONG == null ? 1 : model.DAULUONG;
            ViewBag.MangVTUPLTB = mangvt;
            return PartialView(model);
        }

    }
}
